import axios from 'axios'
import {
    showLoading,
    hideLoading
} from '../utils/loading'
import {
    Message
} from 'element-ui'

const service = axios.create({
    // baseURL: "",
    timeout: 15000, // 请求超时时间
    headers: {
    // Authorization: 'Bearer ' + window.sessionStorage.getItem('access_token'),
        'Content-Type': 'application/json;charset=UTF-8'
    }
})

// request拦截器
service.interceptors.request.use(
    config => {
    // Loading
        showLoading()

        let accessToken = window.sessionStorage.getItem('access_token')
        if (accessToken) {
            // 判断是否存在token，如果存在的话，则每个http header都加上token
            config.headers.Authorization = `Bearer ${accessToken}` // 根据实际情况自行修改
        }
        return config
    },
    error => {
    // 关闭Loading
        hideLoading()
        Promise.reject(error)
    }
)

// response拦截器
service.interceptors.response.use(
    response => {
    // 关闭Loading
        hideLoading()
        if (response.data.code === 200) {
            return response.data
        } else {
            if (response.data.code === 400) {
                console.log(response.data)
                Message.error({
                    message: response.data.message
                })
            }
            return Promise.reject(response)
        }
    },
    error => {
        hideLoading()
        if (error.response.status === 401) { // token失效 ,重新获取token
            // tip信息提示
            Message.error({
                message: '不允许访问,请联系网站'
            })
        } else if (error.response.status === 500) { // 服务器断开
            // tip信息提示
            Message.error({
                message: '服务器断开，请稍后重试'
            })
        } else if (error.response.status === 403) { // 无auth授权，后台不允许访问
            // tip信息提示
            Message.error({
                message: '不允许访问,请联系网站'
            })
        }
        return Promise.reject(error)
    }
)

export default service
